A file server with 2.0a software will frequently get a General Protection Interrupt (GPI) error and halt when the workstations are running a file or record lock intensive application program. The LAN is ARCNET or some other lower performance network. The frequency of the GPI increases as the number of operating workstations increases. With 6 workstations the error usually occurs within 20 minutes. Upgrading the system to a faster LAN topology usually causes the problem to cease.
Initially the problems were found by users of Softcraft's Btrieve which performs large numbers of physical record locks. Potentially the problem could also exhibit itself with any other lock intensive application.
CAUSE
This problem was found to be caused by two bugs in the lock code in the operating system. Although related, each of these two bugs would cause the file server to GPI at different places. The bugs would only exhibit themselves when intensive record and/or file locking were performed on a lower performance network.
The first bug is related to the number of reply buffers that are setup in the operating system. The GPI is caused by the OS attempting to utilize more reply buffers than actually exist.
The second bug occurs when a reply buffer is wrongly placed back on the available stack while it is actually still in use by the driver.
SOLUTION
Patches have been formulated for the various NetWare operating systems that will correct the two bugs discussed above. The patch can be performed using DOS DEBUG and must be performed to the NET$OS.OBJ file on the correct GENOS diskette before it is linked to the drivers. A program that automatically implements the patch will soon be available.
Each operating system type requires a different patch. Patches have been formulated for the following operating systems:
Non-Proprietary NetWare 286 Version 2.0a
Proprietary NetWare 286 Version 2.0a
Nondedicated NetWare 286 Version 2.0a
Non-Proprietary NetWare SFT Level 1 Version 2.0a
Proprietary NetWare SFT Level 1 Version 2.0a
NetWare SFT Level 2 Version 2.0a
SFT II NetWare with TTS Version 2.0a
The patches each check to make sure that the operating system that is being patched matches the patch being used. If any of the search command results do not match with what is shown, then see note 1 at the bottom of the page. The segment numbers shown on the examples may be different than those you actually see when performing the patches. Comments are in parenthesis to the side of DEBUG commands.
It is important that you backup the diskette to be patched before you start. This way, if any errors are made during implementation of the patch, you will still have the original unpatched files.
5BB8:E455 (If the second number is different, see note 1 below)
-e e456
5BB8:E456 FE.a0
-s 0 ffff 26 8c 4d 06 4b 75
5BB8:E534 (If the second number is different, see note 1 below)
-e e538
5BB8:E538 4B.e9 75.2d A8.d4 58.e9 8B.2e 0E.d4
-s 0 ffff e3 5c 50 8b d9 9a
5BB8:E4DE (If the second number is different, see note 1 below)
-e e4df
5BB8:E4DF 5C.5b
-w
Writing 4242D bytes
-q
C:>
The patch is now complete. You can now use GENOS to configure your operating system.
Note 1: If the second number is different when doing these checks then either the operating system has already been patched, the operating system is not version 2.0a, or you are using the wrong patch for the operating system you have.
5BB8:E459 (If the second number is different, see note 1 below)
-e e45a
5BB8:E45A FE.a0
-s 0 ffff 26 8c 4d 06 4b 75
5BB8:E538 (If the second number is different, see note 1 below)
-e e53c
5BB8:E53C 4B.e9 75.2b A8.d4 58.e9
5BB8:E540 8B.2c 0E.d4
-s 0 ffff e3 5c 50 8b d9 9a
5BB8:E4E2 (If the second number is different, see note 1 below)
-e e4e3
5BB8:E4E3 5C.5b
-w
Writing 42431 bytes
-q
C:>
The patch is now complete. You can now use GENOS to configure your operating system.
Note 1: If the second number is different when doing these checks then either the operating system has already been patched, the operating system is not version 2.0a, or you are using the wrong patch for the operating system you have.
5BB8:EDD1 (If the second number is different, see note 1 below)
-e edd2
5BB8:EDD2 FE.a0
-s 0 ffff 26 8c 4d 06 4b 75
5BB8:EEB4 (If the second number is different, see note 1 below)
-e eeb8
5BB8:EEB8 4B.e9 75.0b A8.d4 58.e9 8B.0c 0E.d4
-s 0 ffff e3 5c 50 8b d9 9a
5BB8:EE5E (If the second number is different, see note 1 below)
-e ee5f
5BB8:EE5F 5C.5b
-w
Writing 4477E bytes
-q
C:>
The patch is now complete. You can now use GENOS to configure your operating system.
Note 1: If the second number is different when doing these checks then either the operating system has already been patched, the operating system is not version 2.0a, or you are using the wrong patch for the operating system you have.
OPERATING SYSTEM PATCH
For Non-Proprietary NetWare SFT Level 1 Version 2.0a
6B84:5C60 (If the second number is different, see note 1 below)
-e 5c61
6B84:5C61 FE.a0
-s 0 9000 26 8c 4d 06 4b 75
6B84:5D43 (If the second number is different, see note 1 below)
-e 5d47
6B84:5D47 4B.e9
6B84:5D48 75.1b A8.d4 58.e9 8B.1c 0E.d4
-s 0 9000 e3 5c 50 8b d9 9a
6B84:5CED (If the second number is different, see note 1 below)
-e 5cee
6B84:5CEE 5C.5b
-w
Writing 49D0C bytes
-q
C:>
The patch is now complete. You can now use GENOS to configure your operating system.
Note 1: If the second number is different when doing these checks then either the operating system has already been patched, the operating system is not version 2.0a, or you are using the wrong patch for the operating system you have.
6B84:5C63 (If the second number is different, see note 1 below)
-e 5c64
6B84:5C64 FE.a0
-s 0 9000 26 8c 4d 06 4b 75
6B84:5D46 (If the second number is different, see note 1 below)
-e 5d4a
6B84:5D4A 4B.e9 75.19 A8.d4 58.e9 8B.1a 0E.d4
-s 0 9000 e3 5c 50 8b d9 9a
6B84:5CF0 (If the second number is different, see note 1 below)
-e 5cf1
6B84:5CF1 5C.5b
-w
Writing 49D0F bytes
-q
C:>
The patch is now complete. You can now use GENOS to configure your operating system.
Note 1: If the second number is different when doing these checks then either the operating system has already been patched, the operating system is not version 2.0a, or you are using the wrong patch for the operating system you have.
6B83:9851 (If the second number is different, see note 1 below)
-e 9852
6B83:9852 FE.a0
-s 0 e000 26 8c 4d 06 4b 75
6B83:9934 (If the second number is different, see note 1 below)
-e 9938
6B83:9938 4B.e9 75.19 A8.d3 58.e9 8B.1a 0E.d3
-s 0 e000 e3 5c 50 8b d9 9a
6B83:98DE (If the second number is different, see note 1 below)
-e 98df
6B83:98DF 5C.5b
-w
Writing 4E677 bytes
-q
C:>
The patch is now complete. You can now use GENOS to configure your operating system.
Note 1: If the second number is different when doing these checks then either the operating system has already been patched, the operating system is not version 2.0a, or you are using the wrong patch for the operating system you have.
-r ds (Change register DS by again by adding an additional 1000H)
DS 6BB8 (The segment numbers may be different than shown here)
:7bb8
-s 0 ffff 5d fb 5a 86 d6 5f
7BB8:0E19 (If the second number is different, see note 1 below)
-e 0e13
7BB8:0E13 55.e9 B0.f9 10.a7
-s 0 ffff 26 8c 4d 06 4b 75
7BB8:0099 (If the second number is different, see note 1 below)
-e 9d
7BB8:009D 4B.e9 75.f5 A8.af
7BB8:00A0 58.e9 8B.f6 0E.af
-s 0 ffff e3 5c 50 8b d9 9a
7BB8:0043 (If the second number is different, see note 1 below)
-e 44
7BB8:0044 5C.5b
-w
Writing 54DDC bytes
-q
C:>
The patch is now complete. You can now use GENOS to configure your operating system.
Note 1: If the second number is different when doing these checks then either the operating system has already been patched, the operating system is not version 2.0a, or you are using the wrong patch for the operating system you have.